/**
 * 模糊搜索 正则 , 忽略小写字母以及数字
 */
var fuzzySearchRegex = /^[a-z0-9]+$/;

const INDEX_MENU_ICON_MAPPING = {
    'UAP_FUNCTION_00015': '/static/resources/img/menu/index/ddgl.png', // 订单管理
    'UAP_FUNCTION_00016': '/static/resources/img/menu/index/spgl.png', // 收派管理
    'UAP_FUNCTION_00017': '/static/resources/img/menu/index/kdgl.png', // 开单管理
    'UAP_FUNCTION_00018': '/static/resources/img/menu/index/clgl.png', // 车辆管理
    'UAP_FUNCTION_00019': '/static/resources/img/menu/index/zzgl.png', // 中转管理
    'UAP_FUNCTION_00020': '/static/resources/img/menu/index/qsgl.png', // 签收管理
    'UAP_FUNCTION_00021': '/static/resources/img/menu/index/kcgl.png', // 库存管理
    'UAP_FUNCTION_00022': '/static/resources/img/menu/index/cwgl.png', // 财务管理
    'UAP_FUNCTION_00023': '/static/resources/img/menu/index/xxgl.png', // 消息管理
    'UAP_FUNCTION_00024': '/static/resources/img/menu/index/bbgl.png', // 报表管理
    'UAP_FUNCTION_00025': '/static/resources/img/menu/index/khzx.png', // 客户中心
    'UAP_FUNCTION_00026': '/static/resources/img/menu/index/zhcx.png', // 综合查询
    'UAP_FUNCTION_00027': '/static/resources/img/menu/index/jczl.png', // 基础资料
    'UAP_FUNCTION_00028': '/static/resources/img/menu/index/qxgl.png', // 权限管理
    'UAP_FUNCTION_00061': '/static/resources/img/menu/index/ccgl.png', // 品质管理
    'UAP_FUNCTION_00058': '/static/resources/img/menu/index/sxksh.png'  //时效可视化
}
const CUSTOM_MENU_ICON_MAPPING = {
    'UAP_FUNCTION_00015': '/static/resources/img/menu/custom/ddgl.png', // 订单管理
    'UAP_FUNCTION_00016': '/static/resources/img/menu/custom/spgl.png', // 收派管理
    'UAP_FUNCTION_00017': '/static/resources/img/menu/custom/kdgl.png', // 开单管理
    'UAP_FUNCTION_00018': '/static/resources/img/menu/custom/clgl.png', // 车辆管理
    'UAP_FUNCTION_00019': '/static/resources/img/menu/custom/zzgl.png', // 中转管理
    'UAP_FUNCTION_00020': '/static/resources/img/menu/custom/qsgl.png', // 签收管理
    'UAP_FUNCTION_00021': '/static/resources/img/menu/custom/kcgl.png', // 库存管理
    'UAP_FUNCTION_00022': '/static/resources/img/menu/custom/cwgl.png', // 财务管理
    'UAP_FUNCTION_00023': '/static/resources/img/menu/custom/xxgl.png', // 消息管理
    'UAP_FUNCTION_00024': '/static/resources/img/menu/custom/bbgl.png', // 报表管理
    'UAP_FUNCTION_00025': '/static/resources/img/menu/custom/khzx.png', // 客户中心
    'UAP_FUNCTION_00026': '/static/resources/img/menu/custom/zhcx.png', // 综合查询
    'UAP_FUNCTION_00027': '/static/resources/img/menu/custom/jczl.png', // 基础资料
    'UAP_FUNCTION_00028': '/static/resources/img/menu/custom/qxgl.png',  // 权限管理
    'UAP_FUNCTION_00061': '/static/resources/img/menu/custom/ccgl.png', // 品质管理
    'UAP_FUNCTION_00058': '/static/resources/img/menu/custom/sxksh.png'  //时效可视化
}

/** 菜单访问类型常量 **/
const INDEX_MENU_ACCESS = 1;  //首页菜单访问
const CUSTOM_MENU_ACCESS = 2; //常用菜单访问
const HOT_KEY_ACCESS = 3;     //快捷键访问
const CODE_ACCESS = 4;        //代码访问

/** 常用菜单状态同步常量 **/
const ACTION_ADD = "add";
const ACTION_DEL = "del";

/**
 * 菜单状态同步
 * action add 添加 , del 删除
 * currMenu 当前操作菜单对象
 */
function syncCustomMenu(action,currentMenu){

    //查找该对象
    $.each(allMenus,function(index,item){
        if(item == currentMenu){
            if(action == ACTION_ADD){
                item.customMenu = {"id":-1};
            }else if(action == ACTION_DEL){
                delete item.customMenu;
            }
        }
    });
}


/**
 * 封装菜单详情
 * 一般用于代码打开菜单日志记录参数封装
 */
function setMenuDetail(functionCode,functionName,sourceSystem,functionUrl){
    return {
        "uumsFunction":{
            "functionCode": functionCode,
            "functionName": functionName,
            "sourceSystem": sourceSystem,
            "functionUrl": functionUrl
        },
        "accessPath": CODE_ACCESS,
        submitOpenTabTime: function (beginTime) {
            statisticsMenuResponse(beginTime, this.uumsFunction);
        }
    };
}

/**
 * 渲染页签 用于UAP系统打开菜单
 * @param functionName 菜单名称
 * @param functionUrl 菜单地址（未处理）
 * @param pageEmbedType 嵌入UAP方式
 * @param functionCode 菜单CODE
 * @param sourceSystem 来源系统名称
 * @param parentFunction 父级菜单编号
 */
function openTab(functionName, functionUrl, pageEmbedType, functionCode, sourceSystem, parentFunction, accessPath) {
  // console.log(sourceSystem);
  switch (sourceSystem) {
        case 'FOSS':
            if (!functionUrl.startsWith("http")) {
                if (functionUrl.indexOf('#!') === -1) {
                    if (functionUrl.startsWith('/')) {
                        functionUrl = functionUrl.substring(1);
                    }
                    functionUrl = FOSS_SERVER_NAME + FOSS_BASE_CONTEXT_PATH + functionUrl;
                } else {
                    functionUrl = functionUrl.replace("#!", "");
                    if (functionUrl.startsWith('/')) {
                        functionUrl = functionUrl.substring(1);
                    }
                    functionUrl = FOSS_SERVER_NAME + functionUrl;
                }
            }
            break;
        case 'OMS':
            if (functionUrl.startsWith('DPDP_')) {
                functionUrl = functionUrl.substring(5);
                if (functionUrl.startsWith('/')) {
                    functionUrl = functionUrl.substring(1);
                }
                functionUrl = OMS_SERVER_NAME + functionUrl;
            } else {
                if (functionUrl.startsWith('/')) {
                    functionUrl = functionUrl.substring(1);
                }
                functionUrl = OMS_SERVER_NAME + OMS_BASE_CONTEXT_PATH + functionUrl;
            }
            break;
        case 'TPS':
            if (functionUrl.startsWith('/')) {
                functionUrl = functionUrl.substring(1);
            }
            functionUrl = TPS_SERVER_NAME + TPS_BASE_CONTEXT_PATH + functionUrl;
            break;
        case 'TVS':
            if (!functionUrl.startsWith("http")) {
                if (functionUrl.indexOf('#!') == -1) {
                    if (functionUrl.startsWith('/')) {
                        functionUrl = functionUrl.substring(1);
                    }
                    functionUrl = TVS_SERVER_NAME + TVS_BASE_CONTEXT_PATH + functionUrl;
                } else {
                    functionUrl = functionUrl.replace("#!", "");
                    if (functionUrl.startsWith('/')) {
                        functionUrl = functionUrl.substring(1);
                    }
                    functionUrl = TVS_SERVER_NAME + functionUrl;
                }
            }
            break;
        case 'QMS':
            if (functionUrl.startsWith('/')) {
                functionUrl = functionUrl.substring(1);
            }
            functionUrl = QMS_SERVER_NAME + functionUrl;
            break;
        case 'CRM':
            if (/(\/[\w\-]+){3}/.test(functionUrl)) {
                if (functionUrl.startsWith('/')) {
                    functionUrl = functionUrl.substring(1);
                }
                functionUrl = CRM_SERVER_NAME + functionUrl;
            } else {
                if (functionUrl.startsWith('/')) {
                    functionUrl = functionUrl.substring(1);
                }
                functionUrl = CRM_SERVER_NAME + CRM_BASE_CONTEXT_PATH + functionUrl;
            }
            break;
        case 'CCS':
            if (functionUrl.startsWith('/')) {
                functionUrl = functionUrl.substring(1);
            }
            if (parentFunction == "UAP_FUNCTION_00161") {
                //为报表模块
                functionUrl = CCS_REPORT_SERVER_NAME + CCS_REPORT_BASE_CONTEXT_PATH + functionUrl;
            } else {
                //其他模块
                functionUrl = CCS_SERVER_NAME + CCS_BASE_CONTEXT_PATH + functionUrl;
            }
            break;
        case 'PTP':
            if (functionUrl.startsWith('/')) {
                functionUrl = functionUrl.substring(1);
            }
            functionUrl = PTP_SERVER_NAME + PTP_BASE_CONTEXT_PATH + functionUrl;
            break;
        case 'RPS':
            if (functionUrl.startsWith('DPDP_')) {
                functionUrl = functionUrl.substring(5);
                if (functionUrl.startsWith('/')) {
                    functionUrl = functionUrl.substring(1);
                }
                functionUrl = RPS_SERVER_NAME + functionUrl;
            } else {
                if (functionUrl.startsWith('/')) {
                    functionUrl = functionUrl.substring(1);
                }
//                functionUrl = RPS_SERVER_NAME + RPS_BASE_CONTEXT_PATH + functionUrl;
                functionUrl = "http://rpssit.deppontest.com:8080/rps-dispatch-web/" + functionUrl;
            }
            break;
        case 'GIS':
        	if (functionUrl.startsWith('/')) {
                functionUrl = functionUrl.substring(1);
            }
        	functionUrl = "http://gis.deppontest.com/gis-map-web/"+functionUrl;
            break;
        case 'ITS':
            if(functionUrl.startsWith("DPDP_")){
                functionUrl = functionUrl.substring(5);
            }

            functionUrl = ITS_SERVER_NAME + functionUrl;
            break;
    }

    var obj = {
        "functionCode": functionCode,
        "functionName": functionName,
        "sourceSystem": sourceSystem,
        "functionUrl": functionUrl
    };

    viewTab(functionName, functionUrl, pageEmbedType, null, {
        "uumsFunction": obj,
        "accessPath": accessPath,
        submitOpenTabTime: function (beginTime) { // 更新菜单响应时长
            statisticsMenuResponse(beginTime, obj);
        }
    });
}

/**
 * 切换快捷键名称与Ascii码对应关系
 * @param asciiOrName Ascii码或者快捷键名字
 * @returns  {number,string} Ascii码或者快捷键名字
 */
// var toggleKeyNameOrAscii = function (asciiOrName) {
//     if (typeof asciiOrName == 'number') {
//         switch (asciiOrName) {
//             case 112 :
//                 return 'F1';
//             case 113 :
//                 return 'F2';
//             case 114 :
//                 return 'F3';
//             case 115 :
//                 return 'F4';
//             case 116 :
//                 return 'F5';
//             case 117 :
//                 return 'F6';
//             case 118 :
//                 return 'F7';
//             case 119 :
//                 return 'F8';
//             case 120 :
//                 return 'F9';
//             case 121 :
//                 return 'F10';
//             case 122 :
//                 return 'F11';
//             case 123 :
//                 return 'F12';
//         }
//     } else if (typeof asciiOrName == 'string') {
//         switch (asciiOrName) {
//             case 'F1' :
//                 return 112;
//             case 'F2':
//                 return 113;
//             case 'F3':
//                 return 114;
//             case 'F4' :
//                 return 115;
//             case 'F5' :
//                 return 116;
//             case 'F6' :
//                 return 117;
//             case 'F7':
//                 return 118;
//             case 'F8':
//                 return 119;
//             case 'F9' :
//                 return 120;
//             case 'F10' :
//                 return 121;
//             case 'F11' :
//                 return 122;
//             case 'F12':
//                 return 123;
//         }
//     }
//     return asciiOrName;
// }

/**
 * 统计菜单异常
 **/
function statisticsMenuException(uumsFunction,exceptionDetail) {
    $.post(LOGSTATISTICS_SERVICE_URL + "menuMonitoring/addMenuException", {
        "menuCode": uumsFunction.functionCode,
        "menuName": uumsFunction.functionName,
        "menuUrl": uumsFunction.functionUrl,
        "systemName": uumsFunction.sourceSystem,
        "exceptionDetail":exceptionDetail
    });
}

/**
 * 统计菜单点击数
 function statisticsMenuClick(uumsFunction) {
    $.post(LOGSTATISTICS_SERVICE_URL + "menuMonitoring/updateMenuClick", {
        "menuCode": uumsFunction.functionCode,
        "menuName": uumsFunction.functionName,
        "systemName": uumsFunction.sourceSystem
    });
}**/

/**
 * 统计菜单响应时长
 */
function statisticsMenuResponse(beginTime, uumsFunction) {
    var responseTime = new Date().getTime() - beginTime;
    $.post(LOGSTATISTICS_SERVICE_URL + "menuMonitoring/updateMenuResponse", {
        "menuCode": uumsFunction.functionCode,
        "menuName": uumsFunction.functionName,
        "systemName": uumsFunction.sourceSystem,
        "responseTime": responseTime
    });
}

/**
 * 监控用户常用菜单使用
 */
function customMenuUseLog(menu, active) {
    $.post(LOGSTATISTICS_SERVICE_URL + "systemGeneralize/customMenuUseLog", {
        "menuCode": menu.functionCode,
        "menuName": menu.functionName,
        "active": active
    });
}

/**
 * 监控菜单访问入口
 */
function menuAccessPathLog(menuCode, menuName, accessPath,systemName) {
    $.post(LOGSTATISTICS_SERVICE_URL + "systemGeneralize/menuAccessPathLog", {
        "menuCode": menuCode,
        "menuName": menuName,
        "accessPath": accessPath,
        "systemName":systemName
    });
}

/**
 * 常用菜单是否初始化
 */
function customMenuInit() {
    if (!userInfo.customMenuInited) {
        $.get(CUSTOM_SERVICE_URL + 'customMenuInit/addInitUser', function (data) {
            if (data.status = 'SUCCESS') {
                userInfo.customMenuInited = true;
            }
        });
    }
}
